The advent of the universal serial bus (USB) has provided significant advancements in a host's ability to communicate with peripheral equipment in a timely and efficient manner. When used in conjunction with asynchronous transfer mode (ATM) technology, however, the universal serial bus presents unique challenges that, until now, have gone largely unaddressed. As used throughout this document, the terms "asynchronous transfer mode" and "ATM" refer to a fixed-length cell based communication technology. As used throughout this document, the terms "universal serial bus" and "USB" refer to a packet-based master-slave communications device operable to facilitate communications between a host and peripheral devices.
One issue associated with communicating information from a communications link to a host over a universal serial bus is how to handle the ATM cells being received from the communications link. One approach has been to utilize a separate first-in-first-out memory structure for each protocol data unit received over each virtual channel of the communications link. This approach waits until the entire protocol data unit has been received before transmitting any cells of the protocol data unit to the host. This approach has several problems. One problem is that using a separate memory structure for each protocol data unit received from each virtual channel results in a tremendous amount of memory requirements at the modem. Another problem with this approach is that waiting until the entire protocol data unit is received before transmitting any ATM cells from that protocol data unit to the host leads to unnecessary latency in transmitting information from the modem to the host.
Another issue involved in transmitting ATM cells over a universal serial bus is how to ensure that the host's driver receives the ATM cells that have been loaded into the host buffer in a timely manner. Typically, when a host desires to receive information from the universal serial bus, it sends an information packet request (IPR) to its operating system, which includes a host buffer to receive the information from the universal serial bus. ATM cells received from the communications link are formatted into USB packets (typically 64-byte packets), and transmitted across the universal serial bus to the host, where they are stored in the queued host buffer.
In general, ATM cells in the host buffer are communicated to the host driver only when the buffer is completely full. Typical universal serial bus specifications provide an exception to this rule, however, allowing the host buffer to be terminated prematurely upon receiving a universal serial bus packet carrying less than its full capacity. This technique is known as "short packeting" the host buffer. Upon receiving a short packet, the queued host buffer is terminated and communicated to the host driver.
A problem that can arise in transmitting ATM cells across a universal serial bus to a host is that particular ATM cells may contain critical information, which may sit in a host buffer for extended time periods while the host waits for the buffer to fill. Various approaches have been implemented attempting to avoid this problem. One approach has been to limit the size of the host buffers queued, hoping that the small buffers will fill quickly and avoid any particular cell being stranded for an extended period. A problem with this approach is that it puts an excessive burden on the host's operating system. Each time a buffer terminates, the driver makes a new information request packet to the operating system. Using small enough buffers to ensure that ATM cells are not unduly delayed can easily result in overburdening the operating system with information request packets, leaving the operating system unable to attend to other necessary processing tasks.
Another approach to solving this problem has been to regulate the time that a host buffer is allowed to fill. These approaches typically use some type of timer which, when exceeded, automatically causes a short packet to be transmitted over the universal serial bus, terminating the host buffer. This approach suffers from many of the same problems plaguing the use of small host buffers. For example, when the timers are set to values short enough to avoid unacceptable delays, the host driver ends up making frequent information packet requests, which places unacceptable burdens on the operating system.